# -*- coding: utf8 -*-
'''
    1.3.6 图像的主成分分析（PCA）
'''

from PIL import Image
from numpy import array
from pylab import imshow, figure, gray, subplot, show
import imtool
import pca

imlist = imtool.get_imlist('./img')

# 打开一幅图像，获取其大小
im = array(Image.open(imlist[0]).convert('L'))
m, n = im.shape[0:2]  # 获取图像大小
imnbr = len(imlist)  # 获取图像的数目

# 创建矩阵，保存所有压平后的图像数据
immatrix = array([array(Image.open(iml)).flatten()
                 for iml in imlist], 'f')

# 执行PCA操作
V, S, immean = pca.pca(immatrix)

# 显示一些图像（均值图像和前7个模式）
figure()
gray()
subplot(2, 4, 1)
imshow(immean.reshape(m, n))
for i in range(7):
    subplot(2, 4, i+2)
    imshow(V[i].reshape(m, n))
show()
